The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
There are massive amounts of information available using computer networks. The information may be represented as events in a computer system, which may come from one or more sources. One way for a computer to gather and make sense of the events is through a publish-subscribe environment. Some examples of information that may be events in the publish-subscribe environment include Webpage browsing information, feed information, emails, user interaction information, and many other pieces of information. In the publish-subscribe environment, events may be published from producers of information and selectively processed (or consumed) by data stream processors for subscribers.
An existing data stream processor may need to be replaced by a new data stream processor because a new technical environment is being used (e.g., a new programming language, a new technical foundation) or to provide additional features not available on the existing data stream processor. However, it is difficult to modify data stream processors once they are deployed. For example, there may exist state information at the existing data stream processor, which is difficult to retrieve, understand, and properly transition to the new data stream processor.
An example of one method to transfer control is to stop an existing data stream processor, determine and store state information of the existing data stream processor, then start a new data stream processor. This may add undesirable latency during the transition of the existing data stream processor to the new data stream processor, and increases risk of errors such as the replication factor, partitioning, and up/downtime. Further, events may not be received by the existing or new data stream processors in chronological order. This means that if an event is out of order, it may not be processed by the existing or the new data stream processor, since the existing data stream processor that is to process the event may never receive the event.
Therefore there is a need for an improved method to coordinate and synchronize transfer of control between data stream processors.